Communications networks (LANs, WANs, etc.) currently transfer vast quantities of information in both local and wide area networks. The information typically consists of signals (electronic or optical) representing digitized or digital voice, video, and/or data that is transferred between endpoints in networks. For information to be transmitted in a network, a communication path must be established within the network between the sender(s) and receiver(s) of the information. In an Internet Protocol (IP) environment, Transmission Control Protocol (TCP) is used at the transport layer, where the layers of the network are defined by the International Standards Organization (ISO) in the Open System Interconnection (OSI) model. TCP is reliable, full-duplex and streaming. To achieve this functionality, the TCP drivers break up a session data stream into discrete packets and attach a TCP header to each packet. An IP header is also attached to the packet and the composite packet is then passed to the network for delivery.
Once the packets are passed to the network, routers (also referred to as network nodes) route the data packets to their various destinations. A router is a network node that forwards data packets within a network as well as from one network to another. Routers read the network address in each transmitted packet and use routing tables and routing protocols to make decisions on where to forward each packet.
FIG. 1 depicts an example of a packet-switching network 100 in which a router 110 connects multiple client computers 101-106. As packets come in and out of the router 110, the router 110 queues the packets for delivery to their destination. In high-speed networks, router queues have a tendency to become congested with packets. When a queue overflows, packets are dropped (typically a tail drop) from several TCP sessions, and the several TCP sessions back-off (i.e., decrease the transmission window) at the same time. This synchronized back-off can cause underutilization at the router.
A conventional technique for handling packet congestion, which addressed the problem of synchronized back-off involves the utilization of Random Early Detection (RED) algorithms. RED algorithms involve detecting congestion within a gateway router and causing TCP sessions to back-off in an unsynchronized manner. Implementing RED involves computing the average queue size of a queue within the router. When the average queue size of the queue is within certain bounds, the router probabilistically drops each arriving packet (i.e., according to a certain drop probability), wherein the drop probability is a function of the average queue size. RED is discussed at length in the following publication, which is incorporated by reference herein: Sally Floyd et al., “Random Early Detection Gateways for Congestion Avoidance” August 1993 IEEE/ACM Transactions on Networking.
FIG. 2 depicts a conventional queue 202. As the number of queued packets increases, the average size of the queue (Qave) increases. The maximum threshold (maxth) 204 is a preset threshold wherein if Qave>maxth, then all incoming packets are dropped. The minimum threshold (minth) 206 is a preset threshold wherein if Qave<minth, then all incoming packets are queued for forwarding to their respective destinations. In the case where,minth<Qave<maxth,a drop probability (Pd) is calculated for each incoming packet and packets are dropped (probabilistically) based on the calculated Pd (e.g., a packet with a higher Pd is more likely to be dropped than a packet with a lower Pd).
In today's networking environment, a plurality of different classes of data traffic are simultaneously transmitted within the same network. For example, different traffic classes may include voice data, streaming audio/video data, web browsing/email data, etc. FIG. 3 depicts a single queue 300 that is utilized to queue different classes of traffic (i.e., class A, class B, and class C traffic). In the example, class A traffic may include voice data, class B traffic may include streaming audio/video, and class C traffic may include web browsing/email data.
In many situations, a particular traffic class may have a higher priority than another traffic class. For example, if voice data is being transmitted (i.e., a phone conversation is being conducted via a network), the transmission of the voice data should have a higher priority than the transmission of a text document. This is due to the fact that the voice data transmission is delay-sensitive, whereas the transmission of the text document is not delay-sensitive and could be transmitted in a more sporadic fashion. However, utilizing the above-described RED scheme to manage traffic congestion, Pd is calculated in the same fashion for all incoming traffic irrespective of traffic class (assuming the traffic from classes A, B, and C is intended for the same queue). That is, the same RED algorithm is used to manage the class A, B, and C traffic and the Pd calculation is made irrespective of the traffic class. Consequently, all of the packets intended for the queue are handled in the same manner regardless of the packet's traffic class. Utilizing the phone conversation example, if voice data (i.e., class A traffic) is being transmitted at the same time as a text document (i.e., class C traffic) and if the queue is congested, then the likelihood of dropping the respective voice packets (i.e., the class A traffic) is the same as the likelihood of dropping the respective text packets (i.e., the class C traffic). Because the voice packets are given no preference over the text packets, the voice data could be transmitted in a choppy fashion, thereby resulting in a poor quality of service (QoS).
Therefore, what is needed is a method and system for controlling the flow of traffic within a network node utilizing RED that addresses the above-described shortcomings of the conventional methodology. The method and system should be simple, cost effective and capable of being easily adapted into existing technology.